from collections import OrderedDict

from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response


class NumPage(PageNumberPagination):
    # 指定每页显示的数据数量  前提是前度没有传递每页显示数量才按照该属性指定的数量返回  127.0.0.1:8000?page=1  第一页返回五条数据
    page_size = 5
    # 指定页数参数   127.0.0.1:8000?page=1 获取第一页数据  默认参数为page 也可以自己指定
    # page_query_param = 'a'
    # 指定每页显示数量的参数 127.0.0.1:8000?page=1&page_size=3 第一页返回三条数据
    page_size_query_param = 'page_size'
    # 每页最大返回数量
    max_page_size = 5
    # 重写分页器返回方法，按照指定字段返回
    def get_paginated_response(self, data):
        return Response(OrderedDict([
            ('count', self.page.paginator.count),
            ('next', self.get_next_link()),
            ('previous', self.get_previous_link()),
            ('list', data)
        ]))
